package _2digui;

public class HanoTowertest {
    //将1~N个盘子移动到指定柱子上，每次只能移动一个，且上层始终是小盘子，下层为大盘子
    //1.将1~N-1移动到辅助盘上
    //2.将N移动到目标盘上
    //3.将1~N-1个盘移动到目标盘上

    public static void main(String[] args) {
        printHanoTower(3,"A","B","C");
    }

    /**
     * 函数作用就是将N个（多个）盘子移动到目标盘
     * @param N 盘子数量
     * @param from 源柱子
     * @param to 目标柱子
     * @param help 辅助柱子
     */
    static void printHanoTower(int N,String from,String to,String help){
        /********找终止条件***********/
        if(N==1){
            System.out.println(N+"号盘子:"+from+"----->"+to);
            return;
        }
        /********找重复****/
        //第一步，先将1~N-1移动到辅助盘，因为是多个，所以和这个方法执行的操作是一样的，直接调用
        printHanoTower(N-1,from,help,to);
        //第二步，将第N个盘子移动到目标柱子上
        System.out.println(N+"号盘子:"+from+"----->"+to);
        //第三步，将N-1个盘子移动到目标柱子上
        printHanoTower(N-1,help,to,from);
    }
}
